LDR Sensor wird auf dem Tableau auf den Schalter mit der LED fuer die
Ausfahrtsschranke gesetzt.
Diese LED leuchtet wenn die Ausfahrtsschranke geschlossen ist.
Sobald die Ausfahrtsschranke geoeffnet wird, erlischt die LED am
Tableau, was der LDR erkennt.
Wenn also die Schranke geoeffnet wird, ertoent ein Alarmton bis die
Schranke wieder geschlossen ist und die LED am Tableaut wieder
eingeschaltet wird.
Man kann auswählen, ob als Alarmton der Darth Vader Sound oder ein
normaler mehrtöniger Alarm abgespielt werden soll.
Arduino Sketch
/*
Ausfahrt-Schrankenalarm
LDR Sensor wird auf dem Tableau auf den Schalter mit der LED fuer die Ausfahrtsschranke gesetzt.
Diese LED leuchtet wenn die Ausfahrtsschranke geschlossen ist.
Sobald die Ausfahrtsschranke geoeffnet wird, geht die LED, was der LDR erkennt.
Wenn also die Schranke geoeffnet wird, ertoent ein Alarmton bis die
Schranke wieder geschlossen ist und die LED am Tableaut wieder eingeschaltet wird.
1 x ESP8266 D1 R2 Mini
1 x LDR
1 x Buzzer
1 x 10k Widerstand für LDR
*/
byte BUZZER_PIN = D7;
boolean DEBUG = true;
boolean DARTHVADER = true;
#define LICHT_AUS 850 // Schwellwert des LDR, Faellt die Umgebungshelligkeit unter den Wert, wird ein Alarm ausgeloest
#define INTERVAL 250 // Interval fuer Alarmton wenn DARTHVADER = false
#define ALARMTON 1500 // Höhe des Alarmtones wenn DARTHVADER = false
/************************************************************
Darth Vader Tonausgabe wenn Schranke geöffnet ist - START
************************************************************/
// Notenfrequenzen
#define NOTE_A4 440
#define NOTE_A3 220
#define NOTE_F4 349
#define NOTE_C5 523
#define NOTE_E5 659
#define NOTE_F5 698
#define NOTE_G5 784
#define NOTE_A5 880
#define NOTE_C4 262
#define NOTE_E4 330
#define NOTE_G4 392
// Imperial March (Darth Vader)
int melody[] = {
NOTE_A4, NOTE_A4, NOTE_A4,
NOTE_F4, NOTE_C5,
NOTE_A4, NOTE_F4, NOTE_C5,
NOTE_A4,
NOTE_E5, NOTE_E5, NOTE_E5,
NOTE_F5, NOTE_C5,
NOTE_G4, NOTE_F4, NOTE_C5,
NOTE_A4
};
int noteDurations[] = {
500, 500, 500,
350, 150,
500, 350, 150,
1000,
500, 500, 500,
350, 150,
500, 350, 150,
1000
};
/************************************************************
Darth Vader Tonausgabe wenn Schranke geöffnet ist - ENDE
************************************************************/
void setup()
{
pinMode(BUZZER_PIN, OUTPUT);
delay(1000);
if(DEBUG) Serial.begin(19200);
}
void loop()
{
int LDRReading = analogRead(0);
if(DEBUG) Serial.print("LDR Value: ");
Serial.println(LDRReading);
if(LDRReading < (LICHT_AUS))
{
if (DARTHVADER == false)
{
playSound();
}
else
{
for (int i = 0; i < 18; i++)
{
tone(BUZZER_PIN, melody[i], noteDurations[i]);
delay(noteDurations[i] * 1.0);
noTone(BUZZER_PIN);
}
}
}
else
{
noTone(BUZZER_PIN);
}
}
void playSound(void) {
tone(BUZZER_PIN, ALARMTON, INTERVAL);
delay(50);
tone(BUZZER_PIN, ALARMTON+1000, INTERVAL-100);
delay(250);
tone(BUZZER_PIN, ALARMTON+800, INTERVAL);
delay(150);
tone(BUZZER_PIN, ALARMTON+600, INTERVAL-100);
delay(150);
}